package useDeprecatedAPI;

import com.google.gson.*;
import model.User;

/*
弃用方法 gson2.8.7
JsonParser():JsonParser类对象构造方法
parse():JsonParser类的方法，将 JSON 字符串解析为一个 JsonElement 对象。
getAsCharacter()： 是JsonElement 类的一个方法，用于从 JsonElement 中提取值，并将其转换为一个字符(Character)。
 */

/*
方法依赖解释：
每一步方法调用的结果都会被后面的方法使用
JsonParser() -> parse() -> getAsCharacter() -> 拼接转换为 JSON -> 新的 JsonParser()
 */

public class JsonCharacterExtraction {
    public JsonObject processJsonAndModify(User user) {
        // 将 User 对象转换为 JSON 字符串
        Gson gson = new Gson();
        String userJson = gson.toJson(user);

        // 创建 JsonParser 对象
        JsonParser parser = new JsonParser();

        // 使用 parse() 方法解析 JSON 字符串
        JsonElement element = parser.parse(userJson);

        // 确保获取 userName 字段并作为 JsonPrimitive 处理
        JsonObject jsonObject = element.getAsJsonObject();
        JsonElement userNameElement = jsonObject.get("userName");

        // 获取 userName 字段的字符串值
        String userName = userNameElement.getAsString();

        // 假设 userName 至少有一个字符，提取第一个字符并确保是一个 JsonPrimitive 类型的字符
        char extractedChar = userName.charAt(0); // 提取第一个字符

        // 使用 getAsCharacter 强制转换为字符的 JsonPrimitive
        JsonElement charElement = new JsonPrimitive(extractedChar);

        // 使用 getAsCharacter() 从 JsonElement 中获取字符
        char charFromElement = charElement.getAsCharacter();

        // 对字符进行复杂化操作
        String modifiedChar = "Character: " + charFromElement;

        // 将修改后的字符转换为 JSON 格式
        JsonObject modifiedJson = new JsonObject();
        modifiedJson.add("modifiedChar", new JsonPrimitive(modifiedChar));

        // 创建 新JsonParser 对象
        JsonParser newParser = new JsonParser();

        // 使用 parse() 方法解析 JSON 字符串
        JsonElement newElement = newParser.parse(String.valueOf(modifiedJson));

        // 返回修改后的 JSON
        return modifiedJson;
    }

}

